#ifndef xpack_configure_switch
#define xpack_configure_switch
#define xmixc                       "Mix-C"

// 注意：该定义会覆盖 xuse_mixc_allocator 选项
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 设置此宏定义后将禁用与系统平台相关模块
#ifndef xuse_mixc_rtos
#define xuse_mixc_rtos              0
#endif

#ifndef xis_single_cpu
#define xis_single_cpu              0
#endif

// 是否使用 gc，当此选项关闭时，关于 gc 的其他选项都将不可用
#ifndef xuse_gc
#define xuse_gc                     1
#endif

// 是否使用独立的 gc 内存释放线程
#ifndef xuse_gc_releaser
#define xuse_gc_releaser            1
#endif

// 用于评估 GC 性能
#ifndef xuse_gc_performance_counter
#define xuse_gc_performance_counter 0
#endif





#define xuse_xdebug                 0
#define xuse_xdebug_fail            1
#define xuse_xdebug_short_path      1

// 使用 Mix-C 内存分配模块
#define xuse_mixc_allocator         0

#define __xswitch_link(A,B)         A ## B
#define __xswitch_link2(A,B)        __xswitch_link(A, B)

// 在 xon 后面的枚举是启用 xdebug 打印的
#define xon                         __xswitch_link2(__enable, __LINE__)       = 0

// 在 xoff 后面的枚举是禁用 xdebug 打印的
#define xoff                        __xswitch_link2(__disable, __LINE__)      = -100000000

enum __mixc_debug_tag : int{
    // 模板
    xon,
    xoff,

    xon,
    xoff,
        im_extern_calc_cbot,

    xon,
    xoff,
        im_extern_fs_meta_list_page_push,
        im_extern_fs_meta_list_page_mark_delete,
        im_extern_fs_hfs_remove_get_var_part_by,
        im_extern_fs_hfs_set_var_part_by,
        im_extern_fs_hfs_remove_from_entry_list,
        im_extern_fs_hfs_remove_from_hash_area,
        im_extern_fs_hfs_get_var_part_item_by,
        im_extern_fs_hfs_set_var_part_item_by,
        im_extern_fs_hfs_open,
        im_extern_fs_hfs_foreach,
        im_extern_fs_hfs_alloc_meta_block,
        im_extern_fs_hfs_alloc_mass_block,
        im_extern_fs_hfs_free_mass_block,
        im_extern_fs_hfs_meta_partion_write,

    xon,
    xoff,
        im_extern_fs_miaofs_initial,
        im_extern_fs_miaofs_alloc_page,
        im_extern_fs_miaofs_remove_flush,
        im_extern_fs_miaofs_foreach,

    // docker/private/hashmap.hpp
    xon,
    xoff,
        im_docker_hashmap_addressing,
        im_docker_hashmap_node_set,
        im_docker_hashmap_set,
        im_docker_hashmap_get,

    // utils/memory_flow
    xon,
    xoff,
        im_utils_memory_flow_free,
        im_utils_memory_flow_take_out,
        im_utils_memory_flow_split,
        im_utils_memory_flow_append,
        im_utils_memory_flow_remove,

    // memop/memory.hpp
    xon,
    xoff,
        im_alloc,
        im_free,
        im_alloc_with_initial,
        im_free_with_destroy,

    // gc/ref
    xon,
    xoff,
        im_gc_meta_routing,
        im_gc__token_mix,
        im_gc__meta,

    // gc/private/tuple
    xon,
    xoff,
        im_gc_tuple_routing,
    
    // net/http
    xon,
        im_net_http_volatle_context_load,
    xoff,

    // 模板
    xon,
    xoff,
};

#undef  xon
#undef  xoff
#undef  __xswitch_link
#undef  __xswitch_link2

#endif
